package com.hibase.core.excel.service;

import com.github.pagehelper.PageInfo;
import com.hibase.core.excel.entity.MdsExcelImportConfig;
import com.hibase.core.excel.vo.config.MdsExcelImportConfigSearchVO;
import com.hibase.core.excel.vo.dynamic.DynamicExcelResult;
import com.hibase.core.mybatis.service.BaseService;
import org.springframework.transaction.annotation.Transactional;

import java.lang.reflect.InvocationTargetException;

/**
 * Excel 导入日志  Service
 *
 * @author <a href="mailto:xiongliyi@hichain.com">Ian Xiong</a>
 * @since 1.5.01-V2
 */
@Transactional(readOnly = true, rollbackFor = Exception.class)
public interface MdsExcelImportConfigService extends BaseService<MdsExcelImportConfig> {

    /**
     * 分页查询
     *
     * @param searchVO 查询参数
     * @return 返回Excel模板信息
     */
    PageInfo queryPage(MdsExcelImportConfigSearchVO searchVO);

    /**
     * 新增配置模板
     *
     * @param entity 模板信息
     * @return {Boolean}
     */
    boolean saveImportConfig(MdsExcelImportConfig entity);

    /**
     * 更新配置模板
     *
     * @param entity 模板信息
     * @return 返回更新记录的行数
     */
    int updateImportConfig(MdsExcelImportConfig entity);

    /**
     * 编号查询
     *
     * @param code 模板编码
     * @return 返回导入模板配置信息
     */
    MdsExcelImportConfig getByCode(String code);

    /**
     * 默认配置查询
     *
     * @return 返回导入模板配置信息
     */
    MdsExcelImportConfig getByDefaultConfig();

    /**
     * 导入Excel数据
     *
     * @param dynamicExcelResult Excel 数据集
     // * @param bindingResult      Excel解析及执行全生命周期内的绑定信息（主要用于记录错误消息）
     * @return 返回执行结果相关信息
     * @throws InvocationTargetException
     * @throws IllegalAccessException
     */
    Object importExcel(DynamicExcelResult dynamicExcelResult) throws InvocationTargetException, IllegalAccessException;

    /**
     * 模板编码查询
     *
     * @param code 编码查询
     * @return 返回模板信息
     */
    MdsExcelImportConfig selectByCode(String code);
}
